RO

[Encerrado] Pda Exp Reduzida Em Determinado Level

Por rodrigoorgirdor, 29 de out. de 2012 em Tópicos Sem Resposta

25
3.1k
SlicerS
30 de outubro de 2012 às 09:57

usa esse aki.. '--'

 

local balls = {11826, 11828, 11829, 11831, 11832, 11834, 11835, 11837,

11737, 11739, 11740, 11742, 11743, 11745, 11746, 11748}

 

local Exps = {

[{1, 49}] = 1,

[{50, 74}] = 0.8,

[{75, 99}] = 0.6,

[{100, 149}] = 0.5,

[{150, 199}] = 0.4,

}

--2798 -normal- //

local function playerAddExp(cid, exp)

doPlayerAddExp(cid, exp)

doSendAnimatedText(getThingPos(cid), exp, 215)

end

 

local function calculaExp(cid, expTotal)

if not isPlayer(cid) then return 0 end

local expFinal = expTotal

for lvl, exp in pairs(Exps) do

if getPlayerLevel(cid) >= lvl[1] or getPlayerLevel(cid) <= lvl[2] then

expFinal = expFinal * exp

break

end

end

if expFinal == expTotal then expFinal = expFinal * 0.1 end --lvl 200+

return math.floor(expFinal)

end

 

local function giveExpToPlayer(pk, expTotal, givenexp, expstring) --alterado v2.7

playerAddExp(pk, expTotal)

 

local firstball = getPlayerSlotItem(pk, 8)

 

if not isInParty(pk) and firstball and getItemAttribute(firstball.uid, expstring) and getItemAttribute(firstball.uid, expstring) > 0 then

local percent = getItemAttribute(firstball.uid, expstring) <= 1 and getItemAttribute(firstball.uid, expstring) or 1

local gainexp = math.ceil(percent * givenexp)

doItemSetAttribute(firstball.uid, expstring, 0)

givePokemonExp(pk, firstball, expTotal) --alterado v2.7

elseif isInParty(pk) and firstball.uid ~= 0 then

givePokemonExp(pk, firstball, expTotal*3) --alterado v2.7

end

 

for b = 1, #balls do

local pokes = getItemsInContainerById(getPlayerSlotItem(pk, 3).uid, balls)

if #pokes >= 1 then

for _, uid in pairs (pokes) do

if not isInParty(pk) and getItemAttribute(uid, expstring) and getItemAttribute(uid, expstring) > 0 then

local percent = getItemAttribute(uid, expstring) <= 1 and getItemAttribute(uid, expstring) or 1

local gainexp = math.ceil(percent * givenexp)

doItemSetAttribute(uid, expstring, 0)

givePokemonExpInBp(pk, uid, gainexp, balls) --alterado v2.7

elseif isInParty(pk) and getItemAttribute(uid, expstring) and getItemAttribute(uid, expstring) > 0 then

givePokemonExpInBp(pk, uid, expTotal*3, balls)

end

end

end

end

end

 

 

 

function onDeath(cid, corpse, deathList)

 

--if not isCreature(cid) then return true end

if isSummon(cid) or not deathList or corpse.itemid == 0 or getCreatureName(cid) == "Evolution" then return true end

 

-------------Edited Golden Arena------------------------- --alterado v2.7 \/\/

if getPlayerStorageValue(cid, 22546) == 1 then

setGlobalStorageValue(22548, getGlobalStorageValue(22548)-1)

doItemSetAttribute(corpse.uid, "golden", 1)

end

if getPlayerStorageValue(cid, 22546) == 1 and getGlobalStorageValue(22548) <= 0 then

local wave = getGlobalStorageValue(22547)

for _, sid in ipairs(getPlayersOnline()) do

if isPlayer(sid) and getPlayerStorageValue(sid, 22545) == 1 then

if getGlobalStorageValue(22547) < #wavesGolden+1 then

doPlayerSendTextMessage(sid, 21, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")

doPlayerSendTextMessage(sid, 28, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")

addEvent(creaturesInGolden, 100, GoldenUpper, GoldenLower, false, true, true)

addEvent(doWave, timeToWaves*1000)

elseif getGlobalStorageValue(22547) == #wavesGolden+1 then

doPlayerSendTextMessage(sid, 20, "You have win the golden arena! Take your reward!")

doPlayerAddItem(sid, 2152, getPlayerStorageValue(sid, 22551)*2) --premio

setPlayerStorageValue(sid, 22545, -1)

doTeleportThing(sid, getClosestFreeTile(sid, posBackGolden), false)

setPlayerRecordWaves(sid)

end

end

end

if getGlobalStorageValue(22547) == #wavesGolden+1 then

endGoldenArena()

end

end

--------------------------------------------------- /\/\

 

local givenexp = getWildPokemonExp(cid)

local expstring = ""..cid.."expEx"

 

if givenexp > 0 then

for a = 1, #deathList do

local pk = deathList[a]

if isCreature(pk) then

local list = getSpectators(getThingPosWithDebug(pk), 30, 30, false)

local expTotal = math.floor(playerExperienceRate * givenexp * getDamageMapPercent(pk, cid))

expTotal = calculaExp(pk, expTotal)

local party = getPartyMembers(pk)

 

if isInParty(pk) and getPlayerStorageValue(pk, 4875498) <= -1 then

expTotal = math.floor(expTotal/#party) --alterado v2.6.1

for i = 1, #party do

if isInArray(list, party) and getDamageMapPercent(party, cid) > 0 then --alterado v2.8

giveExpToPlayer(party, expTotal, givenexp, expstring)--alterado v2.7

end

end

else

giveExpToPlayer(pk, expTotal, givenexp, expstring) --alterado v2.7

end

 

end

end

end

 

if isNpcSummon(cid) then

local master = getCreatureMaster(cid)

doSendMagicEffect(getThingPos(cid), getPlayerStorageValue(cid, 10000))

doCreatureSay(master, getPlayerStorageValue(cid, 10001), 1)

doRemoveCreature(cid)

return false

end

 

 

doItemSetAttribute(corpse.uid, "offense", getPlayerStorageValue(cid, 1011))

doItemSetAttribute(corpse.uid, "defense", getPlayerStorageValue(cid, 1012))

doItemSetAttribute(corpse.uid, "speed", getPlayerStorageValue(cid, 1013))

doItemSetAttribute(corpse.uid, "vitality", getPlayerStorageValue(cid, 1014))

doItemSetAttribute(corpse.uid, "spattack", getPlayerStorageValue(cid, 1015))

doItemSetAttribute(corpse.uid, "level", getLevel(cid))

doItemSetAttribute(corpse.uid, "gender", getPokemonGender(cid))

return true

end

 

30 de outubro de 2012 às 10:24

resumindo... eu troco meu arquivo exp.lua... por esse conteudo aí ... correto?

SlicerS
30 de outubro de 2012 às 10:46

nao neh u,U

eh o creaturescript/scripts/pokeexp.lua

30 de outubro de 2012 às 11:02

kkk de boa, boiei aki.... vou testar aki

 

Deu Certo. porem quando o pokemon selvagem morre... da o seguinte erro ...

 

[30/10/2012 10:57:22] [Error - CreatureScript Interface]

[30/10/2012 10:57:22] data/creaturescripts/scripts/pokeexp.lua:onDeath

[30/10/2012 10:57:22] Description:

[30/10/2012 10:57:22] data/creaturescripts/scripts/pokeexp.lua:138: attempt to call global 'getLevel' (a nil value)

[30/10/2012 10:57:22] stack traceback:

[30/10/2012 10:57:22] data/creaturescripts/scripts/pokeexp.lua:138: in function <data/creaturescripts/scripts/pokeexp.lua:63>

notle2012N
30 de outubro de 2012 às 11:40

troca essa linha

doItemSetAttribute(corpse.uid, "level", getLevel(cid))

por essa

doItemSetAttribute(corpse.uid, "level", getPokemonLevel(cid))

SlicerS
30 de outubro de 2012 às 12:55

notle, getLevel eh pra por o lvl atual do poke no corpse... ;x ta certo ali..

 

@rodrigoorgirdor

vc ta usando o serv sem lvl neh? como da pra ver.. aquele script eh pro serv COM lvl...

30 de outubro de 2012 às 23:18

to usando sem level

 

aki deu certinho ! resolvido aki vlw

Session StartS
30 de outubro de 2012 às 23:40

Duvida sanada, reportado para moverem...

31 de outubro de 2012 às 01:43

pessoal... desculpem... dei uma bobeira gigante aki........ to até emcabulado ainda.. pensei ter visto o resultado ok hj pela manhã... mas agora fui testar novamente não deu certo... NÃO está diminuindo o xp nos intervalos 50, 75, 100, 125 ... mauz ae... alguem pode me ajudar?

 

eu devo criar novo tópico?

5 anos depois...
StigalS
20 de abril de 2018 às 00:33
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.